跳到主要内容

关于 Jackson

Jackson 是 Java 生态事实上的 JSON 处理库,GitHub 地址 FasterXML/Jackson。本系列聚焦实际工程里反复用到的序列化 / 反序列化配置与扩展,不展开与 Gson、Fastjson 的性能对比。

Jackson 在实际工程里覆盖三种格式,都建立在同一套 ObjectMapper API 之上:

依赖

只需要 jackson-databind,它内嵌了 jackson-corejackson-annotations,日常 JSON 场景够用:

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>

用到 java.time.* 日期还要加 jackson-datatype-jsr310;XML、MessagePack 各自需要对应的 dataformat 扩展,具体见对应文档。

ObjectMapper

ObjectMapper 是所有操作的入口。它是线程安全的,整个应用声明一个全局单例即可,不要每次序列化都 new 一个:

private static final ObjectMapper MAPPER = new ObjectMapper();

更推荐用 JsonMapper.builder() 集中配置,把忽略未知字段、跳过 null、时区、java.time 处理等一次性写好,见 ObjectMapper 配置。配置固定后,可以直接用工具类封装常用 API,见 JacksonUtils 工具类封装